#ifndef DEF_ETAT_EXPLORATION_H
#   define DEF_ETAT_EXPLORATION_H



/**
 * \struct zone def_etat_exploration.h
 * Une structure zone permet de savoir, lors de l'exploration d'une region,
 * si la zone en question a ete visitee par le joueur durant cette meme
 * exploration (auquel cas il ne peut pas rejouer la bataille de cette zone a
 * moins de sortir de la region et d'y rentrer de nouveau), et egalement de
 * savoir par quels cotes la zone est raccordee a ses eventuelles voisines.\n
 * Notez que pour savoir si une bataille a ete remportee dans une zone lors
 * d'une exploration passee, il faut
 * consulter l'etat_partie et non l'etat_exploration.
 */
struct zone
{
    /**
     * numero de la zone.
     * Rappel : le joueur commence l'exploration dans la zone numero 1
     */
    unsigned char id_zone;
    /**
     * FAUX apres initialisation de l'etat_exploration, VRAI a partir du
     * moment ou le joueur remporte la bataille se deroulant dans cette zone
     */
    char exploree;
    /**
     * Les raccords entre la zone et ses voisines.\n
     * VRAI si existant, FAUX sinon.\n
     * raccord[0] -> le haut\n
     * raccord[1] -> la droite\n
     * raccord[2] -> le bas\n
     * raccord[3] -> la gauche\n
     * Ainsi, il est possible de faire raccords[HAUT], raccords[DROITE], etc.\n
     * Notez bien que l'ordre haut droite bas
     * gauche est tres present dans ce projet.
     */
    char raccords[4];
};




/**
 * \struct etat_exploration def_etat_exploration.h
 * Une structure etat_exploration permet de suivre
 * l'avancement du joueur dans une region.\n
 * On initialise cette structure lors de son entree dans la
 * region, et on la detruit lorsque le joueur la quitte.\n
 * Notez bien que les coordonnees pour reperer
 * une zone dans une region debutent a 0.
 */
struct etat_exploration
{
    /**
     * adresse du nom de la region en cours d'exploration.\n
     * Les noms de regions sont contenus dans le tab_dyn_regions de
     * la structure base_donnees
     */
    const char* nom_region;
    /**
     * pointeur vers une tableau de pointeurs vers
     * les informations sur les zones de la region.\n
     * Ce tableau est constitue d'une seule allocation que
     * l'on traite comme un tableau 9x9.\n
     * Si un emplacement ne comporte pas de zone, on aura un pointeur NULL.
     */
    struct zone** tab_zones;
};




#endif /* DEF_ETAT_EXPLORATION_H */

